package com.yootk.listener;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.SmartLifecycle;
import org.springframework.stereotype.Component;

/**
 * 自定义的消息监听方法
 * SmartLifecycle生命周期扩展
 */
@Component
public class MessageListener5 implements SmartLifecycle {
    private static final Logger LOGGER = LoggerFactory.getLogger(MessageListener5.class);

    private boolean running = false;    // 当前的运行状态

    // 消息的接收处理
    public void onReciever(String msg) {
        LOGGER.info("【{1} 接收到新消息】{}", msg);
    }

    @Override
    public void start() {
        LOGGER.info("【{1} 消息通道连接】服务器消息通道建立成功。");
        this.running = true;
    }

    @Override
    public void stop() {
        LOGGER.info("【{1} 消息通道关闭】断开服务器连接，关闭消息监听服务。");
        this.running = false;
    }

    @Override
    public boolean isRunning() {
        // 判断当前的操作Bean是否已经启动，如果没有启动返回false，则触发start()执行
        // 如果当前的方法返回的是一个true，则表示已经启动了，那么不调用start()方法
        return this.running;
    }

    // 配置是否自动执行start()方法
    @Override
    public boolean isAutoStartup() {
        // 返回true：上下文对象调用refresh()方法的时候，会自动执行start()方法
        // 返回false：上下文对象必须显示通过start()方法启动时才会调用start()方法
        return true;    // 不需要调用start()方法
    }

    @Override
    public int getPhase() {
        return 1;
    }
}
